package com.example.java8.feature_05;

public class TestCommand {

	public static void main(String[] args){
		ProcessArray pa = new ProcessArray();
		int[] target = {3, -4, 6, 4};
		//处理数组，具体处理行为取决于匿名内部类
		pa.process(target, new Command() {
			@Override
			public void process(int[] target) {
				int sum = 0;
				for(int temp : target){
					sum += temp;
				}
				System.out.println("数组元素的总和是:" + sum);
			}
		});
		/**
		 * 从上面代码可以看出，ProcessArray类的process()方法处理数组时，希望可以动态传入一段
		 * 代码作为具体的处理行为，因此创建创建了一个匿名内部类实例来封装处理行为。
		 * Lambda表达式完全可用于简化创建匿名内部类对象，因此可将上面代码改为如下形式。
		 * */
	}
	public static void testLambda(){
		ProcessArray pa = new ProcessArray();
		int[] array = {3, -4, 6, 4};
		pa.process(array, (int[] target)->{
			int sum = 0;
			for(int temp : target){
				sum =+ temp;
			}
			System.out.println("数组元素的总和是:" + sum);
		});
	}
	/**
	 * 从上面程序中可以看出，这段代码不需要new Xxx(){}这种繁琐代码，不需要指出重写的方法名，也不
	 * 需要给出重写方法的返回值类型————只要给出重写的方法括号以及括号里的形参列表即可。
	 * */
}
